import { defineStore } from 'pinia'
import { ref } from 'vue'
import { ReqDistrictCommunity } from '@/api/region'

/**
 * 区域的全局状态
 */
export const useRegionStore = defineStore('regionStore', () => {
  /**
   * 区域列表
   */
  const regionList = ref<string[]>([])

  /**
   * 地点列表
   */
  const placeList = ref<string[]>([])

  /**
   * 当前选中的区域小标
   */
  const regionIndex = ref<number>(0)

  /**
   * 当前选中的点点小标
   */
  const placeIndex = ref<number>(0)

  /**
   * 初始化
   * @param 返回一个Promise  标识请求结束
   */
  const init = () => {
    return new Promise((reslove) => {
      //获取所有的区域
      ReqDistrictCommunity()
        .then((res) => {
          //请求成功
          if (res.code == 200 && res.data && res.data.length > 0) {
            //存储区域列表
            regionList.value = res.data

            //获取该区域下所有的社区名称
            ReqDistrictCommunity({ district: res.data[0] })
              .then((result) => {
                if (
                  result.code == 200 &&
                  result.data &&
                  result.data.length > 0
                ) {
                  //存储社区名称列表
                  placeList.value = result.data
                }
              })
              .finally(() => {
                reslove(true)
              })
          }
        })
        .catch(() => {
          reslove(true)
        })
    })
  }

  /**
   * 根据区域重新获取社区列表
   */
  const getCommunityList = () => {
    //获取该区域下所有的社区名称
    ReqDistrictCommunity({
      district: regionList.value[regionIndex.value],
    }).then((result) => {
      if (result.code == 200 && result.data && result.data.length > 0) {
        //存储社区名称列表
        placeList.value = result.data
      }
    })
  }

  /**
   * 获取当前区域信息
   */
  const getRegionInfo = () => {
    return `${placeList.value[placeIndex.value]}-${
      regionList.value[regionIndex.value]
    }`
  }

  return {
    regionIndex,
    placeIndex,
    placeList,
    regionList,
    init,
    getCommunityList,
    getRegionInfo
  }
})
